#include<stdio.h>
#include<sys/types.h>
#include<dirent.h>

void do_ls(char *dirname);

int main(int argc,char *argv[])
{
    if(argc==1)
    {
        do_ls(".");
    }
    else
    {
        /*逐个显示指定目录的内容*/
        while(--argc)
        {
            printf("%s:\n",*++argv);
            do_ls(*argv);
        }
    }

    return 0;
}

/*读取并显示目录中的文件名*/
void do_ls(char *dirname)
{
    DIR *dir_ptr = NULL;
    struct dirent *direntp = NULL;

    /*打开目录，并判断返回值*/
    if((dir_ptr = opendir(dirname)) == NULL)
    {
        /*打开失败，显示失败信息*/
        fprintf(stderr,"ls: cannot open %s\n",dirname);
    }
    else
    {
        /*打开成功，读取目录项目，并显示*/
        while((direntp = readdir(dir_ptr)) != NULL)
        {
            printf("%s\n",direntp->d_name);
        }

        /*关闭打开的目录*/
        closedir(dir_ptr);
    }
}
